var codigos;
var nomes;
var precos;
var pontos;

$(document).ready(function() {
	carrega_clientes();
    // carrega_produtos();
    
    $("#codigo_produto").focusout(function() {
    	$("#codigo_produto").val($("#codigo_produto").val().replace('-', ''));
    	codigo_produto_focusout();
    });
    
    $("#nome_produto").focusout(function() {
    	nome_produto_focusout();
    })
    
    if ($("#nome_cliente").val() == "") {
    	$("#busca").focus();
    } else {
    	$("#codigo_produto").focus();
    }
    
    $("#busca").keyup(function() {
    	var texto = $("input[name=busca]").val();
    	texto = texto.trim().toUpperCase();
    	
    	if (texto == "") {
    		$("span#filter").html('');
    		$("div.individual").each(function() {
	    		$(this).show();
	    	});
    	} else {
    		$("span#filter").html(' - Filtro: ' + texto);
    		$("div.individual").each(function() {
	    		$(this).hide();
	    	});
	    	
	    	var divs = $("div.individual:contains('" + texto + "')");
	    	divs.each(function() {
	    		$(this).show();
	    	});
    	}
    });
});

function codigo(item_id, codigo, csrf_token) {
    
    codigo = window.prompt("Novo código", codigo);
    if (codigo == null)
        return false;
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/codigo/",
            data: {
                item_id: item_id,
                codigo: codigo,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                return true;
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function quantidade(item_id, quantidade, csrf_token) {
    
    quantidade = window.prompt("Nova quantidade", quantidade);
    if (quantidade == null)
        return false;
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/quantidade/",
            data: {
                item_id: item_id,
                quantidade: quantidade,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                return true;
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function pontos(item_id, pontos, csrf_token) {
    
    pontos = window.prompt("Nova pontuação", pontos);
    if (pontos == null)
        return false;
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/pontos/",
            data: {
                item_id: item_id,
                pontos: pontos,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                return true;
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function preco(item_id, preco, csrf_token) {
    
    preco = window.prompt("Novo preço", preco);
    if (preco == null)
        return false;
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/preco/",
            data: {
                item_id: item_id,
                preco: preco,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                return true;
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function valor_pago(item_id, valor_pago, csrf_token) {
    
    valor_pago = window.prompt("Novo valor", valor_pago);
    if (valor_pago == null)
        return false;
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/valor_pago/",
            data: {
                item_id: item_id,
                valor_pago: valor_pago,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                return true;
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function carrega_clientes() {
    var csrf_token = getCookie('csrftoken');
    var nomes_cliente = [];
    $( "#nome_cliente" ).autocomplete({
        source: nomes_cliente
    });
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/clientes/",
            data: {
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                $.each(retorno, function(key, value){
                    nomes_cliente[key] = value.fields.nome;
                });
                
                $( "#nome_cliente" ).autocomplete({
                    source: nomes_cliente
                });
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function carrega_produtos(empresa_slug) {
    var csrf_token = getCookie('csrftoken');
    codigos = [];
    nomes = [];
    precos = [];
    pontos = [];
    
    $( "#codigo_produto" ).autocomplete({
        source: codigos
    });
    
    $( "#nome_produto" ).autocomplete({
        source: nomes
    });
    
    $( "#preco_produto" ).autocomplete({
        source: precos
    });
    
    $( "#pontos_produto" ).autocomplete({
    	source: pontos
    });
    
    $.ajax(
        {
            type: "POST",
            url: "/revenda/produtos/",
            data: {
            	slug: empresa_slug,
                csrfmiddlewaretoken: csrf_token
            },
            async: false,
            success: function(retorno) {
                $.each(retorno, function(key, value){
                    codigos[key] = value.fields.codigo;
                    nomes[key] = value.fields.nome;
                    precos[key] = value.fields.preco_sugerido;
                    pontos[key] = value.fields.pontos_sugeridos;
                });
                
                $( "#codigo_produto" ).autocomplete({
                    source: codigos
                });
                
                $( "#nome_produto" ).autocomplete({
                    source: nomes
                });
                
                $( "#preco_produto" ).autocomplete({
                    source: precos
                });
                
                $( "#pontos_produto" ).autocomplete({
                	source: pontos
                });
            },
            statusCode: {
                404: function() {
                    alert('Pagina não encontrada');
                    return false;
                },
                408: function() {
                    alert('Não responde');
                    return false;
                }
            }
        }
    );
}

function alternar_cliente(codigo, nome, csrf_token) {
	alert('Você está tentando remover este item de ' + nome + ' e tentando adicionar a um outro cliente. Porém esta funcionalidade não está disponível ainda. Por enquanto, adicione ao outro cliente da forma tradicional e em seguida remova o item de ' + nome);
	$("#codigo_produto").val(codigo);
	$("#codigo_produto").trigger('focusout');
	$("#nome_cliente").focus();
	$("#nome_cliente").select();
	return false;
}

function codigo_produto_focusout() {
	if ($("#quantidade_produto").val().trim() == "") {
		$("#quantidade_produto").val(1);
	}
	
	var i = codigos.indexOf($("#codigo_produto").val());
	if (i >= 0) {
		$("#nome_produto").val(nomes[i]);
		$("#preco_produto").val(precos[i]);		
		$("#pontos_produto").val(pontos[i]);
	}
}

function nome_produto_focusout() {
	var i = nomes.indexOf($("#nome_produto").val());
	
	if ($("#codigo_produto").val().trim() == "") {
		$("#codigo_produto").val(codigos[i]);
		codigo_produto_focusout();
	}
}